home *** CD-ROM | disk | FTP | other *** search
/ Power Programmierung / Power-Programmierung CD 2 (Tewi)(1994).iso / c / compcomp / gnuawk / gawk.man < prev    next >
Text File  |  1990-04-17  |  40KB  |  1,123 lines

  1.  
  2.  
  3.  
  4.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  5.  
  6.  
  7.  
  8.      NAME
  9.           gawk - pattern scanning and processing language
  10.  
  11.      SYNOPSIS
  12.           gawk [ -a ] [ -e ] [ -c ] [ -C ] [ -V ] [ -Ffs ] [ -v
  13.           var=val ] -f program-file [ -- ] file ...
  14.           gawk [ -a ] [ -e ] [ -c ] [ -C ] [ -V ] [ -Ffs ] [ -v
  15.           var=val ] [ -- ] program-text file ...
  16.  
  17.      DESCRIPTION
  18.           Gawk is the GNU Project's implementation of the AWK
  19.           programming language.  It conforms to the definition and
  20.           description of the language in The AWK Programming Language,
  21.           by Aho, Kernighan, and Weinberger, with the additional
  22.           features defined in the System V Release 4 version of UNIX
  23.           awk, and some GNU-specific extensions.
  24.  
  25.           The command line consists of options to gawk itself, the AWK
  26.           program text (if not supplied via the -f option), and values
  27.           to be made available in the ARGC and ARGV pre-defined AWK
  28.           variables.
  29.  
  30.           Gawk accepts the following options, which should be
  31.           available on any implementation of the AWK language.
  32.  
  33.           -Ffs Use fs for the input field separator (the value of the
  34.                FS predefined variable).
  35.  
  36.           -v var=val
  37.                Assign the value val, to the variable var, before
  38.                execution of the program begins.  Such variable values
  39.                are available to the BEGIN block of an AWK program.
  40.  
  41.           -f program-file
  42.                Read the AWK program source from the file program-file,
  43.                instead of from the first command line argument.
  44.                Multiple -f options may be used.
  45.  
  46.           --   Signal the end of options. This is useful to allow
  47.                further arguments to the AWK program itself to start
  48.                with a ``-''.  This is mainly for consistency with the
  49.                argument parsing convention used by most other System V
  50.                programs.
  51.  
  52.           The following options are specific to the GNU
  53.           implementation.
  54.  
  55.           -a   Use AWK style regular expressions as described in the
  56.                book.  This is the current default, but may not be when
  57.                the POSIX P1003.2 standard is finalized.  It is
  58.                orthogonal to -c.
  59.  
  60.  
  61.  
  62.  
  63.      Page 1                                          (printed 4/17/90)
  64.  
  65.  
  66.  
  67.  
  68.  
  69.  
  70.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  71.  
  72.  
  73.  
  74.           -e   Use egrep(1) style regular expressions as described in
  75.                POSIX standard.  This may become the default when the
  76.                POSIX P1003.2 standard is finalized.  It is orthogonal
  77.                to -c.
  78.  
  79.           -c   Run in compatibility mode.  In compatibility mode, gawk
  80.                behaves identically to UNIX awk; none of the GNU-
  81.                specific extensions are recognized.
  82.  
  83.           -C   Print the short version of the GNU copyright
  84.                information message on the error output.  This option
  85.                may disappear in a future version of gawk.
  86.  
  87.           -V   Print version information for this particular copy of
  88.                gawk on the error output.  This is useful mainly for
  89.                knowing if the current copy of gawk on your system is
  90.                up to date with respect to whatever the Free Software
  91.                Foundation is distributing.  This option may disappear
  92.                in a future version of gawk.
  93.  
  94.           Any other options are flagged as illegal, but are otherwise
  95.           ignored.
  96.  
  97.           An AWK program consists of a sequence of pattern-action
  98.           statements and optional function definitions.
  99.  
  100.                pattern   { action statements }
  101.                function name(parameter list) { statements }
  102.  
  103.           Gawk first reads the program source from the program-file(s)
  104.           if specified, or from the first non-option argument on the
  105.           command line.  The -f option may be used multiple times on
  106.           the command line.  Gawk will read the program text as if all
  107.           the program-files had been concatenated together.  This is
  108.           useful for building libraries of AWK functions, without
  109.           having to include them in each new AWK program that uses
  110.           them.  To use a library function in a file from a program
  111.           typed in on the command line, specify /dev/tty as one of the
  112.           program-files, type your program, and end it with a ^D
  113.           (control-d).
  114.  
  115.           The environment variable AWKPATH specifies a search path to
  116.           use when finding source files named with the -f option.  If
  117.           this variable does not exist, the default path is
  118.           ".:/usr/lib/awk:/usr/local/lib/awk".  If a file name given
  119.           to the -f option contains a ``/'' character, no path search
  120.           is performed.
  121.  
  122.           Gawk compiles the program into an internal form, executes
  123.           the code in the BEGIN block(s) (if any), and then proceeds
  124.           to read each file named in the ARGV array.  If there are no
  125.           files named on the command line, gawk reads the standard
  126.  
  127.  
  128.  
  129.      Page 2                                          (printed 4/17/90)
  130.  
  131.  
  132.  
  133.  
  134.  
  135.  
  136.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  137.  
  138.  
  139.  
  140.           input.
  141.  
  142.           If a ``file'' named on the command line has the form var=val
  143.           it is treated as a variable assignment. The variable var
  144.           will be assigned the value val.  This is most useful for
  145.           dynamically assigning values to the variables AWK uses to
  146.           control how input is broken into fields and records. It is
  147.           also useful for controlling state if multiple passes are
  148.           needed over a single data file.
  149.  
  150.           For each line in the input, gawk tests to see if it matches
  151.           any pattern in the AWK program.  For each pattern that the
  152.           line matches, the associated action is executed.
  153.  
  154.      VARIABLES AND FIELDS
  155.           AWK variables are dynamic; they come into existence when
  156.           they are first used. Their values are either floating-point
  157.           numbers or strings, depending upon how they are used. AWK
  158.           also has one dimension arrays; multiply dimensioned arrays
  159.           may be simulated.  There are several pre-defined variables
  160.           that AWK sets as a program runs; these will be described as
  161.           needed and summarized below.
  162.  
  163.         Fields
  164.           As each input line is read, gawk splits the line into
  165.           fields, using the value of the FS variable as the field
  166.           separator.  If FS is a single character, fields are
  167.           separated by that character.  Otherwise, FS is expected to
  168.           be a full regular expression.  In the special case that FS
  169.           is a single blank, fields are separated by runs of blanks
  170.           and/or tabs.  Note that the value of IGNORECASE (see below)
  171.           will also affect how fields are split when FS is a regular
  172.           expression.
  173.  
  174.           Each field in the input line may be referenced by its
  175.           position, $1, $2, and so on.  $0 is the whole line. The
  176.           value of a field may be assigned to as well.  Fields need
  177.           not be referenced by constants:
  178.  
  179.                n = 5
  180.                print $n
  181.  
  182.           prints the fifth field in the input line.  The variable NF
  183.           is set to the total number of fields in the input line.
  184.  
  185.           References to non-existent fields (i.e. fields after $NF),
  186.           produce the null-string. However, assigning to a non-
  187.           existent field (e.g., $(NF+2) = 5) will increase the value
  188.           of NF, create any intervening fields with the null string as
  189.           their value, and cause the value of $0 to be recomputed,
  190.           with the fields being separated by the value of OFS.
  191.  
  192.  
  193.  
  194.  
  195.      Page 3                                          (printed 4/17/90)
  196.  
  197.  
  198.  
  199.  
  200.  
  201.  
  202.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  203.  
  204.  
  205.  
  206.         Built-in Variables
  207.           AWK's built-in variables are:
  208.  
  209.                ARGC the number of command line arguments (does not
  210.                     include options to gawk, or the program source).
  211.  
  212.                ARGV array of command line arguments. The array is
  213.                     indexed from 0 to ARGC - 1.  Dynamically changing
  214.                     the contents of ARGV can control the files used
  215.                     for data.
  216.  
  217.                ENVIRON
  218.                     An array containing the values of the current
  219.                     environment.  The array is indexed by the
  220.                     environment variables, each element being the
  221.                     value of that variable (e.g., ENVIRON["HOME"]
  222.                     might be /u/arnold).  Changing this array does not
  223.                     affect the environment seen by programs which gawk
  224.                     spawns via redirection or the system function.
  225.                     (This may change in a future version of gawk.)
  226.  
  227.                FILENAME
  228.                     the name of the current input file.  If no files
  229.                     are specified on the command line, the value of
  230.                     FILENAME is ``-''.
  231.  
  232.                FNR  the input record number in the current input file.
  233.  
  234.                FS   the input field separator, a blank by default.
  235.  
  236.                IGNORECASE
  237.                     Controls the case-sensitivity of all regular
  238.                     expression operations. If IGNORECASE has a non-
  239.                     zero value, then pattern matching in rules, field
  240.                     splitting with FS, regular expression matching
  241.                     with ~ and !~, and the gsub(), index(), match(),
  242.                     split(), and sub() pre-defined functions will all
  243.                     ignore case when doing regular expression
  244.                     operations.  Thus, if IGNORECASE is not equal to
  245.                     zero, /aB/ matches all of the strings "ab", "aB",
  246.                     "Ab", and "AB".  As with all AWK variables, the
  247.                     initial value of IGNORECASE is zero, so all
  248.                     regular expression operations are normally case-
  249.                     sensitive.
  250.  
  251.                NF   the number of fields in the current input record.
  252.  
  253.                NR   the total number of input records seen so far.
  254.  
  255.                OFMT the output format for numbers, %.6g by default.
  256.  
  257.                OFS  the output field separator, a blank by default.
  258.  
  259.  
  260.  
  261.      Page 4                                          (printed 4/17/90)
  262.  
  263.  
  264.  
  265.  
  266.  
  267.  
  268.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  269.  
  270.  
  271.  
  272.                ORS  the output record separator, by default a newline.
  273.  
  274.                RS   the input record separator, by default a newline.
  275.                     RS is exceptional in that only the first character
  276.                     of its string value is used for separating
  277.                     records. If RS is set to the null string, then
  278.                     records are separated by blank lines.  When RS is
  279.                     set to the null string, then the newline character
  280.                     always acts as a field separator, in addition to
  281.                     whatever value FS may have.
  282.  
  283.                RSTART
  284.                     the index of the first character matched by
  285.                     match(); 0 if no match.
  286.  
  287.                RLENGTH
  288.                     the length of the string matched by match(); -1 if
  289.                     no match.
  290.  
  291.                SUBSEP
  292.                     the character used to separate multiple subscripts
  293.                     in array elements, by default "\034".
  294.  
  295.         Arrays
  296.           Arrays are subscripted with an expression between square
  297.           brackets ([ and ]).  If the expression is an expression list
  298.           (expr, expr ...) then the array subscript is a string
  299.           consisting of the concatenation of the (string) value of
  300.           each expression, separated by the value of the SUBSEP
  301.           variable.  This facility is used to simulate multiply
  302.           dimensioned arrays. For example:
  303.  
  304.                i = "A" ; j = "B" ; k = "C"
  305.                x[i, j, k] = "hello, world\n"
  306.  
  307.           assigns the string "hello, world\n" to the element of the
  308.           array x which is indexed by the string "A\034B\034C". All
  309.           arrays in AWK are associative, i.e. indexed by string
  310.           values.
  311.  
  312.           The special operator in may be used in an if or while
  313.           statement to see if an array has an index consisting of a
  314.           particular value.
  315.  
  316.                if (val in array)
  317.                     print array[val]
  318.  
  319.           If the array has multiple subscripts, use (i, j) in array.
  320.  
  321.           The in construct may also be used in a for loop to iterate
  322.           over all the elements of an array.
  323.  
  324.  
  325.  
  326.  
  327.      Page 5                                          (printed 4/17/90)
  328.  
  329.  
  330.  
  331.  
  332.  
  333.  
  334.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  335.  
  336.  
  337.  
  338.           An element may be deleted from an array using the delete
  339.           statement.
  340.  
  341.         Variable Typing
  342.           Variables and fields may be (floating point) numbers, or
  343.           strings, or both. How the value of a variable is interpreted
  344.           depends upon its context. If used in a numeric expression,
  345.           it will be treated as a number, if used as a string it will
  346.           be treated as a string.
  347.  
  348.           To force a variable to be treated as a number, add 0 to it;
  349.           to force it to be treated as a string, concatenate it with
  350.           the null string.
  351.  
  352.           The AWK language defines comparisons as being done
  353.           numerically if possible, otherwise one or both operands are
  354.           converted to strings and a string comparison is performed.
  355.  
  356.           Uninitialized variables have the numeric value 0 and the
  357.           string value "" (the null, or empty, string).
  358.  
  359.      PATTERNS AND ACTIONS
  360.           AWK is a line oriented language. The pattern comes first,
  361.           and then the action. Action statements are enclosed in { and
  362.           }.  Either the pattern may be missing, or the action may be
  363.           missing, but, of course, not both. If the pattern is
  364.           missing, the action will be executed for every single line
  365.           of input.  A missing action is equivalent to
  366.  
  367.                { print }
  368.  
  369.           which prints the entire line.
  370.  
  371.           Comments begin with the ``#'' character, and continue until
  372.           the end of the line.  Blank lines may be used to separate
  373.           statements.  Normally, a statement ends with a newline,
  374.           however, this is not the case for lines ending in a ``,'',
  375.           ``{'', ``?'', ``:'', ``&&'', or ``||''.  Lines ending in do
  376.           or else also have their statements automatically continued
  377.           on the following line.  In other cases, a line can be
  378.           continued by ending it with a ``\'', in which case the
  379.           newline will be ignored.
  380.  
  381.           Multiple statements may be put on one line by separating
  382.           them with a ``;''.  This applies to both the statements
  383.           within the action part of a pattern-action pair (the usual
  384.           case), and to the pattern-action statements themselves.
  385.  
  386.         Patterns
  387.           AWK patterns may be one of the following:
  388.  
  389.                BEGIN
  390.  
  391.  
  392.  
  393.      Page 6                                          (printed 4/17/90)
  394.  
  395.  
  396.  
  397.  
  398.  
  399.  
  400.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  401.  
  402.  
  403.  
  404.                END
  405.                /regular expression/
  406.                relational expression
  407.                pattern && pattern
  408.                pattern || pattern
  409.                pattern ? pattern : pattern
  410.                (pattern)
  411.                ! pattern
  412.                pattern1, pattern2
  413.  
  414.           BEGIN and END are two special kinds of patterns which are
  415.           not tested against the input.  The action parts of all BEGIN
  416.           patterns are merged as if all the statements had been
  417.           written in a single BEGIN block. They are executed before
  418.           any of the input is read. Similarly, all the END blocks are
  419.           merged, and executed when all the input is exhausted (or
  420.           when an exit statement is executed).  BEGIN and END patterns
  421.           cannot be combined with other patterns in pattern
  422.           expressions.  BEGIN and END patterns cannot have missing
  423.           action parts.
  424.  
  425.           For /regular expression/ patterns, the associated statement
  426.           is executed for each input line that matches the regular
  427.           expression.  Regular expressions are the same as those in
  428.           egrep(1), and are summarized below.
  429.  
  430.           A relational expression may use any of the operators defined
  431.           below in the section on actions.  These generally test
  432.           whether certain fields match certain regular expressions.
  433.  
  434.           The &&, ||, and ! operators are logical AND, logical OR, and
  435.           logical NOT, respectively, as in C.  They do short-circuit
  436.           evaluation, also as in C, and are used for combining more
  437.           primitive pattern expressions. As in most languages,
  438.           parentheses may be used to change the order of evaluation.
  439.  
  440.           The ?: operator is like the same operator in C. If the first
  441.           pattern is true then the pattern used for testing is the
  442.           second pattern, otherwise it is the third. Only one of the
  443.           second and third patterns is evaluated.
  444.  
  445.           The pattern1, pattern2 form of an expression is called a
  446.           range pattern.  It matches all input lines starting with a
  447.           line that matches pattern1, and continuing until a line that
  448.           matches pattern2, inclusive. It does not combine with any
  449.           other sort of pattern expression.
  450.  
  451.         Regular Expressions
  452.           Regular expressions are the extended kind found in egrep.
  453.           They are composed of characters as follows:
  454.  
  455.                c    matches the non-metacharacter c.
  456.  
  457.  
  458.  
  459.      Page 7                                          (printed 4/17/90)
  460.  
  461.  
  462.  
  463.  
  464.  
  465.  
  466.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  467.  
  468.  
  469.  
  470.                \c   matches the literal character c.
  471.  
  472.                .    matches any character except newline.
  473.  
  474.                ^    matches the beginning of a line or a string.
  475.  
  476.                $    matches the end of a line or a string.
  477.  
  478.                [abc...]
  479.                     character class, matches any of the characters
  480.                     abc....
  481.  
  482.                [^abc...]
  483.                     negated character class, matches any character
  484.                     except abc... and newline.
  485.  
  486.                r1|r2
  487.                     alternation: matches either r1 or r2.
  488.  
  489.                r1r2 concatenation: matches r1, and then r2.
  490.  
  491.                r+   matches one or more r's.
  492.  
  493.                r*   matches zero or more r's.
  494.  
  495.                r?   matches zero or one r's.
  496.  
  497.                (r)  grouping: matches r.
  498.           The escape sequences that are valid in string constants (see
  499.           below) are also legal in regular expressions.
  500.  
  501.         Actions
  502.           Action statements are enclosed in braces, { and }.  Action
  503.           statements consist of the usual assignment, conditional, and
  504.           looping statements found in most languages. The operators,
  505.           control statements, and input/output statements available
  506.           are patterned after those in C.
  507.  
  508.         Operators
  509.           The operators in AWK, in order of increasing precedence, are
  510.  
  511.                = += -= *= /= %= ^=
  512.                     Assignment. Both absolute assignment (var = value)
  513.                     and operator-assignment (the other forms) are
  514.                     supported.
  515.                ?:   The C conditional expression. This has the form
  516.                     expr1 ? expr2 : expr3. If expr1 is true, the value
  517.                     of the expression is expr2, otherwise it is expr3.
  518.                     Only one of expr2 and expr3 is evaluated.
  519.                ||   logical OR.
  520.                &&   logical AND.
  521.                ~ !~ regular expression match, negated match.
  522.  
  523.  
  524.  
  525.      Page 8                                          (printed 4/17/90)
  526.  
  527.  
  528.  
  529.  
  530.  
  531.  
  532.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  533.  
  534.  
  535.  
  536.                < <= > >= != ==
  537.                     the regular relational operators.
  538.                blank
  539.                     string concatenation.
  540.                + -  addition and subtraction.
  541.                * / %
  542.                     multiplication, division, and modulus.
  543.                + - !
  544.                     unary plus, unary minus, and logical negation.
  545.                ^    exponentiation (** may also be used, and **= for
  546.                     the assignment operator).
  547.                ++ --
  548.                     increment and decrement, both prefix and postfix.
  549.                $    field reference.
  550.  
  551.         Control Statements
  552.           The control statements are as follows:
  553.  
  554.                if (condition) statement [ else statement ]
  555.                while (condition) statement
  556.                do statement while (condition)
  557.                for (expr1; expr2; expr3) statement
  558.                for (var in array) statement
  559.                break
  560.                continue
  561.                delete array[index]
  562.                exit [ expression ]
  563.                { statements }
  564.  
  565.         I/O Statements
  566.           The input/output statements are as follows:
  567.  
  568.                close(filename)
  569.                     close file (or pipe, see below).
  570.                getline
  571.                     set $0 from next input record; set NF, NR, FNR.
  572.                getline <file
  573.                     set $0 from next record of file; set NF.
  574.                getline var
  575.                     set var from next input record; set NF, FNR.
  576.                getline var <file
  577.                     set var from next record of file.
  578.                next Stop processing the current input record. The next
  579.                     input record is read and processing starts over
  580.                     with the first pattern in the AWK program. If the
  581.                     end of the input data is reached, the END
  582.                     block(s), if any, are executed.
  583.                print
  584.                     prints the current record.
  585.                print expr-list
  586.                     prints expressions.
  587.                print expr-list >file
  588.  
  589.  
  590.  
  591.      Page 9                                          (printed 4/17/90)
  592.  
  593.  
  594.  
  595.  
  596.  
  597.  
  598.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  599.  
  600.  
  601.  
  602.                     prints expressions on file.
  603.                printf fmt, expr-list
  604.                     format and print.
  605.                printf fmt, expr-list >file
  606.                     format and print on file.
  607.                system(cmd-line)
  608.                     execute the command cmd-line, and return the exit
  609.                     status.  (This may not be available on systems
  610.                     besides UNIX and GNU.)
  611.  
  612.           Other input/output redirections are also allowed. For print
  613.           and printf, >>file appends output to the file, while |
  614.           command writes on a pipe.  In a similar fashion, command |
  615.           getline pipes into getline.  Getline will return 0 on end of
  616.           file, and -1 on an error.
  617.  
  618.         The printf Statement
  619.           The AWK versions of the printf and sprintf (see below)
  620.           functions accept the following conversion specification
  621.           formats:
  622.  
  623.                %c   An ASCII character.  If the argument used for %c
  624.                     is numeric, it is treated as a character and
  625.                     printed.  Otherwise, the argument is assumed to be
  626.                     a string, and the only first character of that
  627.                     string is printed.
  628.  
  629.                %d   A decimal number (the integer part).
  630.  
  631.                %i   Just like %d.
  632.  
  633.                %e   A floating point number of the form
  634.                     [-]d.ddddddE[+-]dd.
  635.  
  636.                %f   A floating point number of the form [-]ddd.dddddd.
  637.  
  638.                %g   Use e or f conversion, whichever is shorter, with
  639.                     nonsignificant zeros suppressed.
  640.  
  641.                %o   An unsigned octal number (again, an integer).
  642.  
  643.                %s   A character string.
  644.  
  645.                %x   An unsigned hexadecimal number (an integer).
  646.  
  647.                %X   Like %x, but using ABCDEF instead of abcdef.
  648.  
  649.                %%   A single % character; no argument is converted.
  650.  
  651.           There are optional, additional parameters that may lie
  652.           between the % and the control letter:
  653.  
  654.  
  655.  
  656.  
  657.      Page 10                                         (printed 4/17/90)
  658.  
  659.  
  660.  
  661.  
  662.  
  663.  
  664.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  665.  
  666.  
  667.  
  668.                -    The expression should be left-justified within its
  669.                     field.
  670.  
  671.                width
  672.                     The field should be padded to this width. If the
  673.                     number has a leading zero, then the field will be
  674.                     padded with zeros.  Otherwise it is padded with
  675.                     blanks.
  676.  
  677.                .prec
  678.                     A number indicating the maximum width of strings
  679.                     or digits to the right of the decimal point.
  680.  
  681.           The dynamic width and prec capabilities of the C library
  682.           printf routines are not supported.  However, they may be
  683.           simulated by using the AWK concatenation operation to build
  684.           up a format specification dynamically.
  685.  
  686.         Special File Names
  687.           When doing I/O redirection from either print or printf into
  688.           a file, or via getline from a file, gawk recognizes certain
  689.           special filenames internally.  These filenames allow access
  690.           to open file descriptors inherited from gawk's parent
  691.           process (usually the shell).  The filenames are:
  692.  
  693.                /dev/stdin
  694.                     The standard input.
  695.  
  696.                /dev/stdout
  697.                     The standard output.
  698.  
  699.                /dev/stderr
  700.                     The standard error output.
  701.  
  702.                /dev/fd/n
  703.                     The file denoted by the open file descriptor n.
  704.  
  705.           These are particularly useful for error messages. For
  706.           example:
  707.  
  708.                print "You blew it!" > "/dev/stderr"
  709.  
  710.           whereas you would otherwise have to use
  711.  
  712.                print "You blew it!" | "cat 1>&2"
  713.  
  714.           These file names may also be used on the command line to
  715.           name data files.
  716.  
  717.         Numeric Functions
  718.           AWK has the following pre-defined arithmetic functions:
  719.  
  720.  
  721.  
  722.  
  723.      Page 11                                         (printed 4/17/90)
  724.  
  725.  
  726.  
  727.  
  728.  
  729.  
  730.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  731.  
  732.  
  733.  
  734.                atan2(y, x)
  735.                     returns the arctangent of y/x in radians.
  736.  
  737.                cos(expr)
  738.                     returns the cosine in radians.
  739.  
  740.                exp(expr)
  741.                     the exponential function.
  742.  
  743.                int(expr)
  744.                     truncates to integer.
  745.  
  746.                log(expr)
  747.                     the natural logarithm function.
  748.  
  749.                rand()
  750.                     returns a random number between 0 and 1.
  751.  
  752.                sin(expr)
  753.                     returns the sine in radians.
  754.  
  755.                sqrt(expr)
  756.                     the square root function.
  757.  
  758.                srand(expr)
  759.                     use expr as a new seed for the random number
  760.                     generator. If no expr is provided, the time of day
  761.                     will be used.  The return value is the previous
  762.                     seed for the random number generator.
  763.  
  764.         String Functions
  765.           AWK has the following pre-defined string functions:
  766.  
  767.                gsub(r, s, t)
  768.                     for each substring matching the regular expression
  769.                     r in the string t, substitute the string s, and
  770.                     return the number of substitutions.  If t is not
  771.                     supplied, use $0.
  772.                index(s, t)
  773.                     returns the index of the string t in the string s,
  774.                     or 0 if t is not present.
  775.                length(s)
  776.                     returns the length of the string s.
  777.                match(s, r)
  778.                     returns the position in s where the regular
  779.                     expression r occurs, or 0 if r is not present, and
  780.                     sets the values of RSTART and RLENGTH.
  781.                split(s, a, r)
  782.                     splits the string s into the array a on the
  783.                     regular expression r, and returns the number of
  784.                     fields. If r is omitted, FS is used instead.
  785.                sprintf(fmt, expr-list)
  786.  
  787.  
  788.  
  789.      Page 12                                         (printed 4/17/90)
  790.  
  791.  
  792.  
  793.  
  794.  
  795.  
  796.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  797.  
  798.  
  799.  
  800.                     prints expr-list according to fmt, and returns the
  801.                     resulting string.
  802.                sub(r, s, t)
  803.                     this is just like gsub, but only the first
  804.                     matching substring is replaced.
  805.                substr(s, i, n)
  806.                     returns the n-character substring of s starting at
  807.                     i.  If n is omitted, the rest of s is used.
  808.                tolower(str)
  809.                     returns a copy of the string str, with all the
  810.                     upper-case characters in str translated to their
  811.                     corresponding lower-case counterparts.  Non-
  812.                     alphabetic characters are left unchanged.
  813.                toupper(str)
  814.                     returns a copy of the string str, with all the
  815.                     lower-case characters in str translated to their
  816.                     corresponding upper-case counterparts.  Non-
  817.                     alphabetic characters are left unchanged.
  818.  
  819.         String Constants
  820.           String constants in AWK are sequences of characters enclosed
  821.           between double quotes ("). Within strings, certain escape
  822.           sequences are recognized, as in C. These are:
  823.  
  824.                \\   A literal backslash.
  825.  
  826.                \a   The ``alert'' character; usually the ASCII BEL
  827.                     character.
  828.  
  829.                \b   backspace.
  830.  
  831.                \f   form-feed.
  832.  
  833.                \n   new line.
  834.  
  835.                \r   carriage return.
  836.  
  837.                \t   horizontal tab.
  838.  
  839.                \v   vertical tab.
  840.  
  841.                \xhex digits
  842.                     The character represented by the string of
  843.                     hexadecimal digits following the \x.  As in ANSI
  844.                     C, all following hexadecimal digits are considered
  845.                     part of the escape sequence.  (This feature should
  846.                     tell us something about language design by
  847.                     committee.) E.g., "\x1B" is the ASCII ESC (escape)
  848.                     character.
  849.  
  850.                \ddd The character represented by the 1-, 2-, or 3-
  851.                     digit sequence of octal digits. E.g. "\033" is the
  852.  
  853.  
  854.  
  855.      Page 13                                         (printed 4/17/90)
  856.  
  857.  
  858.  
  859.  
  860.  
  861.  
  862.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  863.  
  864.  
  865.  
  866.                     ASCII ESC (escape) character.
  867.  
  868.                \c   The literal character c.
  869.  
  870.           The escape sequences may also be used inside constant
  871.           regular expressions (e.g., /[ \t\f\n\r\v]/ matches
  872.           whitespace characters).
  873.  
  874.      FUNCTIONS
  875.           Functions in AWK are defined as follows:
  876.  
  877.                function name(parameter list) { statements }
  878.  
  879.           Functions are executed when called from within the action
  880.           parts of regular pattern-action statements. Actual
  881.           parameters supplied in the function call are used to
  882.           instantiate the formal parameters declared in the function.
  883.           Arrays are passed by reference, other variables are passed
  884.           by value.
  885.  
  886.           Since functions were not originally part of the AWK
  887.           language, the provision for local variables is rather
  888.           clumsy: they are declared as extra parameters in the
  889.           parameter list. The convention is to separate local
  890.           variables from real parameters by extra spaces in the
  891.           parameter list. For example:
  892.  
  893.                function  f(p, q,     a, b) { # a & b are local
  894.                               ..... }
  895.  
  896.                /abc/     { ... ; f(1, 2) ; ... }
  897.  
  898.           The left parenthesis in a function call is required to
  899.           immediately follow the function name, without any
  900.           intervening white space.  This is to avoid a syntactic
  901.           ambiguity with the concatenation operator.  This restriction
  902.           does not apply to the built-in functions listed above.
  903.  
  904.           Functions may call each other and may be recursive.
  905.           Function parameters used as local variables are initialized
  906.           to the null string and the number zero upon function
  907.           invocation.
  908.  
  909.           The word func may be used in place of function.
  910.  
  911.      EXAMPLES
  912.           Print and sort the login names of all users:
  913.  
  914.                BEGIN     { FS = ":" }
  915.                     { print $1 | "sort" }
  916.  
  917.           Count lines in a file:
  918.  
  919.  
  920.  
  921.      Page 14                                         (printed 4/17/90)
  922.  
  923.  
  924.  
  925.  
  926.  
  927.  
  928.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  929.  
  930.  
  931.  
  932.                     { nlines++ }
  933.                END  { print nlines }
  934.  
  935.           Precede each line by its number in the file:
  936.  
  937.                { print FNR, $0 }
  938.  
  939.           Concatenate and line number (a variation on a theme):
  940.  
  941.                { print NR, $0 }
  942.  
  943.      SEE ALSO
  944.           egrep(1)
  945.  
  946.           The AWK Programming Language, Alfred V. Aho, Brian W.
  947.           Kernighan, Peter J. Weinberger, Addison-Wesley, 1988. ISBN
  948.           0-201-07981-X.
  949.  
  950.           The GAWK Manual, published by the Free Software Foundation,
  951.           1989.
  952.  
  953.      SYSTEM V RELEASE 4 COMPATIBILITY
  954.           A primary goal for gawk is compatibility with the latest
  955.           version of UNIX awk.  To this end, gawk incorporates the
  956.           following user visible features which are not described in
  957.           the AWK book, but are part of awk in System V Release 4.
  958.  
  959.           The -v option for assigning variables before program
  960.           execution starts is new.  The book indicates that command
  961.           line variable assignment happens when awk would otherwise
  962.           open the argument as a file, which is after the BEGIN block
  963.           is executed.  However, in earlier implementations, when such
  964.           an assignment appeared before any file names, the assignment
  965.           would happen before the BEGIN block was run.  Applications
  966.           came to depend on this ``feature.'' When awk was changed to
  967.           match its documentation, this option was added to accomodate
  968.           applications that depended upon the old behaviour.
  969.  
  970.           When processing arguments, gawk uses the special option
  971.           ``--'' to signal the end of arguments, and warns about, but
  972.           otherwise ignores, undefined options.
  973.  
  974.           The AWK book does not define the return value of srand().
  975.           The System V Release 4 version of UNIX awk has it return the
  976.           seed it was using, to allow keeping track of random number
  977.           sequences. Therefore srand() in gawk also returns its
  978.           current seed.
  979.  
  980.           Other new features are:  The use of multiple -f options; the
  981.           ENVIRON array; the \a, and \v, \x escape sequences; the
  982.           tolower and toupper built-in functions; and the ANSI C
  983.           conversion specifications in printf.
  984.  
  985.  
  986.  
  987.      Page 15                                         (printed 4/17/90)
  988.  
  989.  
  990.  
  991.  
  992.  
  993.  
  994.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  995.  
  996.  
  997.  
  998.      GNU EXTENSIONS
  999.           Gawk has some extensions to System V awk.  They are
  1000.           described in this section.  All the extensions described
  1001.           here can be disabled by compiling gawk with -DSTRICT, or by
  1002.           invoking gawk with the -c option.  If the underlying
  1003.           operating system supports the /dev/fd directory and
  1004.           corresponding files, then gawk can be compiled with
  1005.           -DNO_DEV_FD to disable the special filename processing.
  1006.  
  1007.           The following features of gawk are not available in System V
  1008.           awk.
  1009.  
  1010.                o    The special file names available for I/O
  1011.                     redirection are not recognized.
  1012.  
  1013.                o    The IGNORECASE variable and its side-effects are
  1014.                     not available.
  1015.  
  1016.                o    No path search is performed for files named via
  1017.                     the -f option.  Therefore the AWKPATH environment
  1018.                     variable is not special.
  1019.  
  1020.                o    The -a, -e, -c, -C, and -V command line options.
  1021.  
  1022.           The AWK book does not define the return value of the close
  1023.           function.  Gawk's close returns the value from fclose(3), or
  1024.           pclose(3), when closing a file or pipe, respectively.
  1025.  
  1026.           When gawk is invoked with the -c option, if the fs argument
  1027.           to the -F option is ``t'', then FS will be set to the tab
  1028.           character.  Since this is a rather ugly special case, it is
  1029.           not the default behavior.
  1030.  
  1031.      BUGS
  1032.           The -F option is not necessary given the command line
  1033.           variable assignment feature; it remains only for backwards
  1034.           compatibility.
  1035.  
  1036.           There are now too many options.  Fortunately, most of them
  1037.           are rarely needed.
  1038.  
  1039.      AUTHORS
  1040.           The original version of UNIX awk was designed and
  1041.           implemented by Alfred Aho, Peter Weinberger, and Brian
  1042.           Kernighan of AT&T Bell Labs. Brian Kernighan continues to
  1043.           maintain and enhance it.
  1044.  
  1045.           Paul Rubin and Jay Fenlason, of the Free Software
  1046.           Foundation, wrote gawk, to be compatible with the original
  1047.           version of awk distributed in Seventh Edition UNIX.  John
  1048.           Woods contributed a number of bug fixes.  David Trueman of
  1049.           Dalhousie University, with contributions from Arnold Robbins
  1050.  
  1051.  
  1052.  
  1053.      Page 16                                         (printed 4/17/90)
  1054.  
  1055.  
  1056.  
  1057.  
  1058.  
  1059.  
  1060.      GAWK(1)     Free Software Foundation (August 24 1989)     GAWK(1)
  1061.  
  1062.  
  1063.  
  1064.           at Emory University, made gawk compatible with the new
  1065.           version of UNIX awk.
  1066.  
  1067.      ACKNOWLEDGEMENTS
  1068.           Brian Kernighan of Bell Labs provided valuable assistance
  1069.           during testing and debugging.  We thank him.
  1070.  
  1071.  
  1072.  
  1073.  
  1074.  
  1075.  
  1076.  
  1077.  
  1078.  
  1079.  
  1080.  
  1081.  
  1082.  
  1083.  
  1084.  
  1085.  
  1086.  
  1087.  
  1088.  
  1089.  
  1090.  
  1091.  
  1092.  
  1093.  
  1094.  
  1095.  
  1096.  
  1097.  
  1098.  
  1099.  
  1100.  
  1101.  
  1102.  
  1103.  
  1104.  
  1105.  
  1106.  
  1107.  
  1108.  
  1109.  
  1110.  
  1111.  
  1112.  
  1113.  
  1114.  
  1115.  
  1116.  
  1117.  
  1118.  
  1119.      Page 17                                         (printed 4/17/90)
  1120.  
  1121.  
  1122.  
  1123.